Hello,

I've changed some lines in menu.module in order to generate a list of possible parents in a tree.

that is my menu_form_alter function

function menu_form_alter(&$form, $form_state, $form_id) {
  if (isset($form['#node']) && $form['#node']->type .'_node_form' == $form_id) {
    // Note - doing this to make sure the delete checkbox stays in the form.
    $form['#cache'] = TRUE;

    $form['menu'] = array(
      '#type' => 'fieldset',
      '#title' => t('Menu settings'),
      '#access' => user_access('administer menu'),
      '#collapsible' => TRUE,
      '#collapsed' => FALSE,
      '#tree' => TRUE,
      '#weight' => -2,
      '#attributes' => array('class' => 'menu-item-form'),
    );
    $item = $form['#node']->menu;

    if ($item['mlid']) {
      // There is an existing link.
      $form['menu']['delete'] = array(
        '#type' => 'checkbox',
        '#title' => t('Delete this menu item.'),
      );
    }
    if (!$item['link_title']) {
      $form['menu']['#collapsed'] = TRUE;
    }

    foreach (array('mlid', 'module', 'hidden', 'has_children', 'customized', 'options', 'expanded', 'hidden', 'parent_depth_limit') as $key) {
      $form['menu'][$key] = array('#type' => 'value', '#value' => $item[$key]);
    }
    $form['menu']['#item'] = $item;

    $form['menu']['link_title'] = array('#type' => 'textfield',
      '#title' => t('Menu link title'),
      '#default_value' => $item['link_title'],
      '#description' => t('The link text corresponding to this item that should appear in the menu. Leave blank if you do not wish to add this post to the menu.'),
      '#required' => FALSE,
    );
    // Generate a list of possible parents (not including this item or descendants).
    $options = menu_parent_options(menu_get_menus(), $item, $result);
		$content  = '<div id="menutreeparent" style="height:300px; overflow:auto; background-color:#DEDEDE;"><ul id="menutree">';
	  $content .= menu_tree_parent(menu_get_menus(), $item);
		$content .= '</ul></div>';
		
    $default = $item['menu_name'] .':'. $item['plid'];
    if (!isset($options[$default])) {
      $default = 'primary-links:0';
    }
/*    $form['menu']['parent'] = array(
      '#type' => 'hidden',
      '#title' => t('Parent item'),
      '#default_value' => $default,
      '#options' => $options,
      '#description' => t('The maximum depth for an item and all its children is fixed at !maxdepth. Some menu items may not be available as parents if selecting them would exceed this limit.', array('!maxdepth' => MENU_MAX_DEPTH)),
      '#attributes' => array('class' => 'menu-title-select'),
    );
*/

    $form['menu']['parent'] = array(
      '#type' => 'hidden',
      '#default_value' => $default,
      '#size' => 100,
      '#maxlength' => 100
      );

    $form['menu']['parentbis'] = array(
      '#type' => 'textfield',
      '#title' => t('Parent item'),			
      '#default_value' => preg_replace('[--]','', $options[$default]),
      '#size' => 50,
      '#maxlength' => 50,
      '#description' => 'Cliquez sur un des menus ou sous-menus dans l\'arborescence ci-dessous. Le menu parent sous lequel se logera votre article appara&icirc;tra dans ce champ de texte.',
			"#attributes" => array('disabled' => 'true'),
			);

    drupal_add_js('misc/menutree.js');

    $form['menu']['menutree'] = array(
			'#type' => 'item',
			'#value' => $content
    );

    $form['#submit'][] = 'menu_node_form_submit';

    $form['menu']['weight'] = array(
      '#type' => 'weight',
      '#title' => t('Weight'),
      '#delta' => 50,
      '#default_value' => $item['weight'],
      '#description' => t('Optional. In the menu, the heavier items will sink and the lighter items will be positioned nearer the top.'),
    );
  }
}

At the end of the module

function menu_tree_parent_recurse($tree, $menu_name, $exclude, $depth_limit){
	foreach ($tree as $data) {
   if ($data['link']['depth'] > $depth_limit) {
      // Don't iterate through any links on this level.
      break;
    }
    if ($data['link']['mlid'] != $exclude && $data['link']['hidden'] >= 0) {
	    $result .= '<li'.($data['link']['has_children'] ? ' class="reduit"' : '').'><lien title="'. $data['link']['title'] .'" txt="'. $menu_name .':'. $data['link']['mlid'] .'"></lien>';
      if ($data['link']['has_children']) {
				$result .= '<ul id="menutree">';
        $result .= menu_tree_parent_recurse($data['below'], $menu_name, $exclude, $depth_limit);
				$result .= '</ul>';
      }
    }
	$result .= '</li>';
	}
	return $result;
}

function menu_tree_parent($menus, $item){
  if (variable_get('menu_override_parent_selector', FALSE)) {
    return array();
  }
  if (isset($item['parent_depth_limit'])) {
    $limit = $item['parent_depth_limit'];
  }
  else {
    $limit = _menu_parent_depth_limit($item);
  }
	foreach ($menus as $menu_name => $title) {
		$tree = menu_tree_all_data($menu_name, NULL);
		if($title != 'Navigation'){
			$r = menu_tree_parent_recurse($tree, $menu_name, $item['mlid'], $limit);
			$result .= '<li><lien title="'. $title .'" txt="'. $menu_name .':0"></lien>';		
			if($r !=''){$result .= '<ul id ="treemenu">'.$r.'</ul>';}
			$result .= '</li>';
		}
	}
	return $result;
}

in misc directory, a javascript file menutree.js (thx to Michel Deboom, http://www.javascriptfr.com/codes/MENU-EXPANSIF-MULTINIVEAUX_27705.aspx)

<!--// Michel Deboom février 2005, menu arborescent expansif sans image 
		
idMenu = 'menutree'
idAncre = 'ancre_menutree'
// mettre 0 pour dsactiver une option :
mno = 1 // un seul sous-menu ouvert par niveau
lien_ouvert = location // lien ouvert par dfaut

function addslashes(str) {
	str=str.replace(/\'/g,'\\\'');
	str=str.replace(/\"/g,'\\"');
	str=str.replace(/\\/g,'\\\\');
	str=str.replace(/\0/g,'\\0');
	return str;
}
function stripslashes(str) {
	str=str.replace(/\\'/g,'\'');
	str=str.replace(/\\"/g,'"');
	str=str.replace(/\\\\/g,'\\');
	str=str.replace(/\\0/g,'\0');
	return str;
}

function a(str){
	str=str.replace(/("|'|\\)/g, "\\$1");
	return str;	
}

function initMenu(){
	var pm;
	menuOuvert=[];// tableau des menus ouverts
	objMenu=document.getElementById("menutree");
	if(objMenu) {
		objMenu.className='menutree';
		liste=objMenu.getElementsByTagName('li');
		for(i=0;i<liste.length;i++){
			L=liste[i];
			//ajoute un titre cliquable
			if(L.getElementsByTagName('ul')[0]){ // sous-menu existant
				titre=L.firstChild.innerHTML;
				txt=L.firstChild.getAttribute("txt");
				title=L.firstChild.getAttribute("title");
				L.removeChild(L.firstChild);
				L.innerHTML='<a onkeydown="aff(this)" onclick="aff(this,1);"><img src="misc/plus.gif" align="absmiddle" /></a><a onkeydown="document.getElementById(\'edit-menu-parent\').value=\''+txt+'\'; document.getElementById(\'edit-menu-parentbis\').value=\''+a(title)+'\';" onclick="document.getElementById(\'edit-menu-parent\').value=\''+txt+'\'; document.getElementById(\'edit-menu-parentbis\').value=\''+a(title)+'\';">'+stripslashes(title)+'</a>'+L.innerHTML;
				ef(L.firstChild) // rduit les sous_menus
			}
			else{
				titre=L.firstChild.innerHTML;
				txt=L.firstChild.getAttribute("txt");
				title=L.firstChild.getAttribute("title");
				L.removeChild(L.firstChild);
				L.innerHTML='<a onclick="document.getElementById(\'edit-menu-parent\').value=\''+txt+'\'; document.getElementById(\'edit-menu-parentbis\').value=\''+a(title)+'\';">'+stripslashes(title)+'</a>'+L.innerHTML;			
			}
		}
		// montre le lien de la page et ouvre les menus parents
		gf=0;
		if(pm)while(pm.id!=idMenu && gf<30){af(pm.parentNode.firstChild);pm=pm.parentNode.parentNode}
	}
}
		
	function ef(el) { // rduit.
	with (el){
		parentNode.getElementsByTagName('ul')[0].style.display="none";
		parentNode.className="reduit";
		}
	return false
}

function aff(el,mulot) { // développe un sous-menu .
	if(mulot)el.removeAttribute('href') // supprime le lien prvu pour la navigation clavier.
	with(el){
		sous_menu=parentNode.getElementsByTagName('ul')[0];
		image=parentNode.getElementsByTagName('img')[0];
		if(sous_menu.style.display=="none"){
			$(sous_menu).slideToggle('slow');
			parentNode.className="ouvert";
			image.src="misc/minus.gif";
		}
		else {
			$(sous_menu).slideToggle('slow');
			parentNode.className="reduit";
			image.src="misc/plus.gif";
		}
		}
	niveau=1;
	// un seul menu ouvert par niveau
	while(sous_menu && sous_menu.parentNode && sous_menu.parentNode.parentNode && sous_menu.id!=idMenu&& niveau<30){
		niveau++;
		sous_menu=sous_menu.parentNode.parentNode;
	}
	if(menuOuvert[niveau] && el!=menuOuvert[niveau] && mno){
		ef(menuOuvert[niveau]);
		menuOuvert[niveau]=el;
	}
}

// Fonction pour ajouter ou enlever un vnement sans craser l'existant. 
function addEvent(obj,evType,fn,capt){
	if(obj.addEventListener){obj.addEventListener(evType,fn,capt);return true;} // DOM 2
	else if(obj.attachEvent)obj.attachEvent("on"+evType,fn) // IE 5+
	else {return false;}
} 

$(document).ready(initMenu)
//-->

In modules/system/system.css

/* style général des ul */
.menutree,.menutree ul{list-style-type:none; background:none;}
.menutree,.menutree li{list-style-type:none; background:none;}
.menutree ul{margin-left:0;padding:0}
.menutree li{margin-left:30px;padding:0}
.menutree img{margin-left:-20px;padding:0}
.menutree{margin:0em 0 0;padding:0;}

/* titres de liste */
.reduit,.ouvert{padding:0 0 0 25px;margin:0;}
.reduit, .ouvert a:focus{text-decoration:underline;color:red;}
.reduit, .ouvert a:active{text-decoration:none;color:black;}
/* ajout des images puces */
.ouvert{font-weight:normal;}
.reduit{font-weight:normal;}